import {
  request
} from "../../request/index"
import regeneratorRuntime from "../../lib/runtime/runtime.js";

Page({

  data: {
    //  左侧的菜单数据
    leftMenuList: [],
    //右边的商品数据
    rightContent: [],
    currentIndex: 0,
    // 右侧内容的滚动条距离顶部的距离
    scrollTop: 0
  },
  Cates: [],

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    /*
      0 web中的本地存储和  小程序中的本地存储区别
       1 写代码的方式不一样了
       web：localStoreage.setItem("key","value")  localStoreage.gettItem("key")
   小程序中：wx.setStorageSync("key","value")   wx.getStorageSync("key")
       2 存的时候  有没有做类型转换
       web：不管存入的是什么类型的数据，最终都会线调用toString(),把数据变成了字符串，在存入进去
   小程序中：不存在 类型转换这个操作  存什么类型的数据进去  获取的时候就是什么类型
    */


    /* 1先判断一下本地存储中有没有旧的数据
        {time:Data.now(),data:[...]}
       2没有旧的数据  直接发送请求
       3有旧的数据 同时 旧的数据也没有过期 就使用 本地存储中的旧数据即可
     */

    //  1获取本地存储中的数据  （小程序中也是存在本地存储 技术）
    const Cates = wx.getStorageSync("cates")
    // 2判断
    if (!Cates) {
      //  不存在  发送请求获取数据
      this.getCates();
    } else {
      // 有旧的数据  定义过期时间  10s 改成  5分钟
      if (Date.now() - Cates.time > 1000 * 10) {
        // 重新发送请求
        this.getCates();
      } else {
        //可以使用旧的数据
        this.Cates = Cates.data;
        let leftMenuList = this.Cates.map(v => v.cat_name);
        let rightContent = this.Cates[0].children;
        this.setData({
          leftMenuList,
          rightContent
        })
      }
    }
  },
  async getCates() {
    // request({
    //   url: '/categories'
    // }).then(res => {
    //   console.log(res)
    //   this.Cates = res.data.message;

    //   // 把接口的数据存入到本地存储中
    //   wx.setStorageSync('cates', {
    //     time: Date.now(),
    //     data: this.Cates
    //   });

    //   // 构造左侧的大菜单数据
    //   let leftMenuList = this.Cates.map(v => v.cat_name);
    //   // 构造右侧的商品数据
    //   let rightContent = this.Cates[0].children;
    //   this.setData({
    //     leftMenuList,
    //     rightContent
    //   })
    // })

    //  使用es7的async await 来发送请求
    const res = await request({
      url: "/categories"
    });
    this.Cates = res;
    // 把接口的数据存入到本地存储中
    wx.setStorageSync('cates', {
      time: Date.now(),
      data: this.Cates
    });
    // 构造左侧的大菜单数据
    let leftMenuList = this.Cates.map(v => v.cat_name);
    // 构造右侧的商品数据
    let rightContent = this.Cates[0].children;
    this.setData({
      leftMenuList,
      rightContent
    })
  },
  // 点击左侧菜单事件
  handleItemTap(e) {
    const {
      index
    } = e.currentTarget.dataset;

    let rightContent = this.Cates[index].children;
    this.setData({
      currentIndex: index,
      rightContent,
      // 重新设置 右侧内容的scroll-view标签的距离顶部的距离
      scrollTop: 0
    })
  },
  onShareAppMessage: function () {

  }
})